package basic

import (
	"fmt"
	"math"
	"math/cmplx"
)

/*常量 const所定义的 可以是任意类型*/
func consts() {
	const (
		filename = "a.txt"
		a, b     = 3, 4
	)
	c := math.Sqrt(a*a + b*b)
	fmt.Println(c, filename)
}

/*枚举 特殊的常量*/
func enums() {
	const (
		cpp = iota //使用iota 从0开始自增
		java
		python
		golang
		javascript
	)
	const (
		a = iota * 2 // 1 << (10 * iota) iota 可以使表达式
		b
		c
	)
	fmt.Println(a, b, c)
}

/*强制类型转化*/
func triangle() {
	a, b := 3, 4
	c := int(math.Sqrt((float64(a*a + b*b))))
	fmt.Println(c)
}

/*最美公式欧拉*/
func euler() {
	fmt.Printf("%.3f\n", cmplx.Exp(1i*math.Pi)+1)
}

/*变量*/
func variable() {
	a, b := 1, "xxx"
	fmt.Println(a, b)
}
func main() {
	/*
		总结：
				变量类型写在变量名之后
				编译器可推测变量类型
				没有char,只有rune
				原生支持复数类型
	*/
	// triangle()
	enums()
	//consts()
}
